package com.jingogo.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.jingogo.entity.User;

/**
 * 用户服务接口
 * 
 * @author jingogo
 * @since 2024-01-01
 */
public interface UserService extends IService<User> {

    /**
     * 用户注册
     */
    void register(User user, String verifyCode);

    /**
     * 用户登录
     */
    String login(String username, String password);

    /**
     * 发送验证码
     */
    void sendVerifyCode(String phone, String type);

    /**
     * 验证验证码
     */
    boolean verifyCode(String phone, String code, String type);

    /**
     * 更新用户信息
     */
    void updateUserInfo(User user);

    /**
     * 实名认证
     */
    void verifyIdentity(Long userId, String realName, String idCard);

    /**
     * 邀请用户
     */
    void inviteUser(Long inviterId, String phone);

    /**
     * 分页查询用户列表
     */
    IPage<User> getUserPage(Integer pageNum, Integer pageSize, String keyword);

    /**
     * 根据ID查询用户
     */
    User getUserById(Long id);

    /**
     * 根据手机号查询用户
     */
    User getUserByPhone(String phone);

    /**
     * 检查手机号是否存在
     */
    boolean isPhoneExists(String phone);

    /**
     * 检查用户名是否存在
     */
    boolean isUsernameExists(String username);

    /**
     * 增加用户积分
     */
    void addUserPoints(Long userId, Integer points);
}